#include <stdio.h>
#include <stdlib.h>

typedef struct data
{
    int T;
    int H;
} data;

data *need_size(data *ptr, size_t size_need, size_t size)
{
   
    if(size_need == 0)
    {
        free(ptr);
        ptr = NULL;
        return NULL;
    }
    if (NULL == ptr)
    {
        printf("创建失败\n");
        return NULL;
    } 
    if(size_need <size)
    {
        printf("新内存比原内存小,是否继续执行?\n(1:是,0:否)");
        int ch = 0;
        scanf("%d",&ch);
        if(0 == ch)
        {
            return NULL;
        }
    }
    data *C1 = (data *)malloc(size_need * sizeof(data));
    
    for (size_t i = 0; i < size_need; i++)
    {
        C1[i].T = 0;
        C1[i].H = 0;
    }
    for (size_t i = 0; i < size; i++)
    {
        C1[i]= ptr[i];
    }

    free(ptr);
    ptr = NULL;

    return C1;
}

int main(int argc, char const *argv[])
{

    int size = 10;
    data *D1 = (data *)malloc(size * sizeof(data));

    for (size_t i = 1; i <= 10; i++)
    {
        D1[i].H = 0;
        D1[i].T = 0;
        printf("%ld\tD1 T %d D1  H %d\n", i, D1[i].T, D1[i].H);
    }
    printf("============================\n");

    data *DD = need_size(D1, 5, 10);

    for (size_t i = 1; i <= 15; i++)
    {
        printf("%ld\tD1 T %d D1  H %d\n", i, DD[i].T, DD[i].H);
    }

    return 0;
}
